﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using XiDainChangAn.OA.DALFactory;
using XiDainChangAn.OA.IBLL;
using XiDainChangAn.OA.IDAL;
using XiDianChangAn.OA.Model;

namespace XiDainChangAn.OA.BLL
{
    //模块内高内聚，模块间低耦合

    //变化点：1，跨数据库，有mysql、sqlserver。2，数据库访问驱动层发生变化
    public class UserInfoService : BaseService<UserInfo>,IUserInfoService
    {
        //让一个菜鸟到另一个一般开发人员

        //IUserInfoDal dal = new UserInfoDal();第一种方法 有依赖

        //以下方法依赖接口里面的方法 就算数据库访问层发生大的变化，也和业务逻辑层，没有关系
        //此种方法也叫依赖接口编程

        //稍微高级点的开发人员也不能这样写，因为
        //private IUserInfoDal dal = StaticDalFactory.GetUserInfoDal();第二种方法 简单工厂

        //private IUserInfoDal dal =AbstractDalFactory.GetUserInfoDal();第三种方法 抽象工厂

        //DbSession dbSession = new DbSession();



        //IDbSession dbSession = DbSessionFactory.GetCurrentDbSession();
        //public bool Add(UserInfo userInfo)
        //{
        //    //return dal.Add(userInfo);

        //    //假设有10000个用户 每个用户和数据库操作10次 每次操作doherty数据库交互
        //    //的话，很消耗内存资源  所以把多个和数据库交互的业务逻辑一起SaveChange的话
        //    //就方面多了
        //    dbSession.UserInfoDal.Add(userInfo);
        //    dbSession.UserInfoDal.Add(new UserInfo());
        //    dbSession.UserInfoDal.UpDate(new UserInfo());
        //    //数据提交的权利从数据库访问层提到了业务逻辑层。
        //    return dbSession.SaveChange() > 0;
        //}
        public override void GetDal()
        {
            CurrentDal = this.dbSession.UserInfoDal;
        }
    }
}
